Local first: your tracker should work on a plane

TrueDuty now records everything on your computer first. A server is optional, and offline time still arrives intact and verifiable.

Plenty of people track time for themselves. They want to know where the week went, not report it to anyone. For them a server is overhead. So the app now starts in local mode: it tracks, stores and charts everything on the machine.

What happens when you join a team

Connect the app with a code, your password or Google. From then on every record is appended to a log on disk. Each record carries a sequence number, the MAC of the record before it and its own HMAC-SHA256 signature made with a key that belongs to that device.

mac = HMAC-SHA256(device_key, seq | previous_mac | kind | canonical_json)

The server accepts a record only if it is exactly the next one in the chain. Delete a record, edit a timestamp or reorder two entries while offline and the chain no longer matches. The server stops accepting data from that device and tells the admins which device and from which record.

Honest limits

Nothing that runs on your own computer is impossible to tamper with. A determined person with a debugger can sign anything the app can sign. What the chain gives you is evidence: edits after the fact are visible, late uploads are marked, and the server cuts trailing idle minutes that break the team's idle rule.