Buy-once isn’t buy-and-forget.

Every release, newest first. Updates install in-app when you ask, are signed, and your timesheet file survives all of them.

v0.4.10 — Retainers that fit real engagements, and a link you can leave off

2026-09-19
  • Recurring retainers now take the cadence you actually bill: every N days, weeks or months, with an option to land on the last day of the month instead of a fixed day. Retainers you already saved keep working unchanged.
  • A retainer can end after a set number of drafts. It marks itself completed and stops reminding you, rather than nagging forever.
  • New tracked-time retainer. When it comes due, one click builds the draft from that client's unbilled hours and billable expenses: fixed-fee projects stay one line, hourly work is grouped the way the invoice builder groups it, and everything it used is locked to the invoice so nothing bills twice. It is still a draft you review and send. Nothing drafts or sends itself.
  • The next run date keeps its phase. Build a monthly retainer late and the 1st stays the 1st; a month-end retainer stays month-end. One click never stacks a queue of missed periods, and a tracked retainer with nothing unbilled builds nothing at all and keeps waiting.
  • Leave your card or UPI link off a single invoice, from that invoice's right-click menu or from two checkboxes in the builder. The PDF drops only that link, the row shows a small no card or no UPI chip so the omission is visible, and the link can be put back. Payments are unchanged and still manual.
  • New help page: moving from Harvest, verify before you cut over. A reconciliation pass with a check, where to look, and a pass condition for each, plus what does not move. Old invoices and payment history stay in Harvest, and the page says so.
  • Fixed: the invoice row's action buttons ran together at the right edge, so PDF and void read as one word.

v0.4.9 — Lost presets, a timeline race, and a quieter Today screen

2026-09-16
  • Saved report presets and starter task templates vanished when you relaunched the app on Mac. They were left out of the list of collections that gets written to disk, so every restart quietly forgot them. The browser build stores one blob and never had the bug, which is why it went unnoticed as long as it did. Both are persisted now.
  • A timeline block could be dropped if a save landed while the capture thread was mid-write. The capture thread owns that collection, and a save used to wipe the table and rewrite it from a copy that was one poll stale. Saves now rewrite only the collections the app itself owns, so blocks survive them.
  • The activity log claimed a budget alert had been emailed even when the send failed. The error was being swallowed and the entry written anyway. It now waits for the send to settle and records the failure instead, so the log is honest about what reached your inbox.
  • The Today screen redid every one of its sums once a second, because the tick that keeps the running clock live re-renders the whole view and nothing was memoised. At a few years of entries that was a meaningful slice of every second, spent on numbers that had not changed. The view now derives them once and only re-derives when your data does.

v0.4.8 — Budget emails, Xero CSV, activity log, projects import

2026-09-14
  • Budget alerts can now reach your inbox. Bring your own SMTP in Settings: warnings fire at 75, 80, 90 and 100% of a project's hours budget, once each, and do not re-send after a relaunch. No relay of ours sits in the middle, so you bring a mailbox you already own.
  • Invoices export as a CSV that Xero imports. Set your account code, tax type, currency and date format once. It is an export, not a sync: no account, no OAuth, and no third party holding a key to your books. Fixed fee lines are written as one row so totals still match the PDF you sent.
  • New activity log in Settings: imports, invoice actions, deletions and undos, restores, and alerts sent. Local only, newest 500 kept, and honest about being a change history rather than an audit trail.
  • Import a plain list of clients, projects and tasks with no time entries required. Matching is case insensitive, existing rates and budgets are never overwritten, and re-importing the same file changes nothing.
  • Fixed: a queued save could be written over a just-restored backup and silently undo the restore. Restores are now recorded in the activity log, and a note left for the next launch picks it up.
  • Fixed: saving anything in Settings could wipe your R2 or SMTP credentials, because the settings record was replaced wholesale instead of merged.
  • Imports now keep the source file's team member as a person: tag rather than dropping it, so a move does not lose who did what.
  • The command line script now ships inside the app, so the documented symlink works without the source.

v0.4.7 — Tag suggestions per trade

2026-09-14
  • The tag field now carries each trade's own name and hints. Ad shops see a Channels field that suggests Social, Search, OOH, and Email as they type; design studios see Rounds with r1, r2, r3; builders and architects see variations (VO1, VO2) suggested; photographers see shoot and selects. Accounting, law, freelancers, and sole practitioners stay plain Tags.
  • Tags are still free-form. Suggestions only fill the input — nothing is forced, and there is no hidden taxonomy in your file.

v0.4.6 — Persona layer: pick your trade, owntime renames itself

2026-09-14
  • First run now asks what you do, and the words follow: Matters for law firms, Stages for architecture, Campaigns for ad shops, Deliverables for studios, Engagements for accountants and sole practitioners, Jobs for builders and photographers.
  • Starter tasks are added to your first project (Calls, Letters, Drafting, Research for lawyers; Reconcile, Journals, Payroll, Review for accountants; and so on). Law firms also get a 6-minute rounding preset and a 6-hour daily goal.
  • Each trade gets its own accent color so the app stops being orange-by-default.
  • Presentation only: budgets stay hours-only and recurring templates stay reminders — the persona layer never changes what the app does.

v0.4.5 — Local dates, retainer tax, leftover Ed25519 struck

2026-09-12
  • Civil dates (retainer next-run, DUE badge, timesheet pickers, reports, rate history) now use the machine's local calendar, not UTC. East-of-UTC timezones (including IST, the default) were getting the previous day.
  • One-click retainer drafts now apply 18% GST the same way the invoice Builder does, and the recurring table shows the client's currency.
  • Planning docs no longer describe an Ed25519 offline license that was never shipped.

v0.4.4 — Truth pass: recurring drafts, void invoices, honest docs

2026-09-12
  • Recurring templates are now real reminders: a row shows DUE when its run date arrives, owntime nudges you once per session, and one click builds the draft invoice. The schedule advances by whole months, not 30-day approximations. Nothing drafts or sends itself.
  • Invoice fix: the saved draft now keeps exactly the lines you previewed. Expense lines and fixed-fee lines were previously dropped from the saved invoice, silently under-billing the total.
  • Void invoices: from the row button or right-click menu. Voiding releases the invoice's entries and expenses back to unbilled.
  • Deleting a client with unbilled items is blocked until you invoice or remove them. A clean delete now takes its entries, expenses, and tasks with it; Undo still works.
  • Timeline: logging a selection that spans a 30+ minute gap splits into separate runs, so billed hours never include idle time between blocks.
  • Docs now match the code: the license activates once online and never checks in again; the margin report and the global ⇧⌘T hotkey are documented as what they are.
  • Test gate grew to 20: new tests lock preview-lines persistence and the legacy invoice grouping path.

v0.4.3 — Billing math fix + import unit fix

2026-08-30
  • Critical fix: invoices built from timer entries could show 60× the real amount (duration rounding returned minutes where hours were expected). Line hours and totals are now correct; the displayed unit in the invoice builder matches what is billed.
  • CSV import: durations like "90m" now parse as 1.5 hours instead of 90 hours. Harvest/Toggl/Clockify/FreshBooks imports unchanged otherwise.
  • Invoice builder totals box no longer duplicates the tax line.
  • Hardening: the local capture endpoint only accepts connections from your own machine now.
  • Every release from here ships with a test gate: 18 tests covering invoice math, rounding increments, rate history, CSV round-trips, and trial days.

v0.4.2 — Visual polish pass

2026-08-28
  • Fixed buttons falling back to the wrong font — controls now use the app type stack consistently.
  • Shortcut badges (⌘1, ⌘N) are styled key chips, including in the active sidebar item.
  • Row hover, budget chips, and trial/licensed chips cleaned up; proper dark-mode variants for paid/tag/streak chips.
  • Reports donut label legibility, invoice PDF heading font, punch-strip stop button hover.
  • No data or behavior changes — purely how it looks. Your timesheet.db is untouched by this update.

v0.4.0 — Timeline — the honest auto-tracker

2026-08-25
  • Passive timeline (opt-in, off by default): records frontmost app + window title locally every 15s. Review at night, select blocks, log as one entry.
  • Permission primer for the cryptic macOS Screen Recording dialog, with deep link + status check.
  • Own-bucket backup: mirror timesheet.db to your Cloudflare R2 or any S3 on every save. Your keys, your bucket, no server from us.
  • Budgets went live: header bars on Today at 75/90/100%, punch strip pulses red when a running project goes over.
  • Nudges got manners: pomodoro and daily reminders are one system notification plus a dismissible card. Quiet hours 20:00–07:00, snooze 1h.

v0.3.0 — Window state, donut charts, CLI

2026-08-24
  • Window remembers where you put it (tauri-plugin-window-state).
  • Reports: project donut chart, avg/day and billable summary cards.
  • CLI: `owntime start/stop/log/status` talks to the app on 127.0.0.1:45123. Raycast-friendly.
  • Drag entries onto projects to reassign; drop a CSV anywhere to import; shift-click range select.
  • Sidebar replaced top tabs; dark mode arrived; right-click context menus everywhere.

v0.2.0 — First public release

2026-08-23
  • Timer, manual entries, weekly timesheet grid with calendar overlay.
  • Clients → projects → tasks, per-project rates, budgets, templates.
  • Invoices with tax, PDF export via browser print, estimates that convert, expenses with receipts, recurring invoices, credit notes.
  • Harvest CSV / Toggl import with dry-run preview.
  • SQLite file at ~/Documents/owntime/timesheet.db, auto-backups every 6h, sync-folder mirror, tray timer, global hotkey ⇧⌘T.
Get the latest →