Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 13:07
· 25 commits to main since this release

The team's today starts at your midnight

The team's tables counted UTC days, as devices sent them. For a team across time zones, that made today nobody's today: the UTC day begins at 17:00 in Los Angeles, at 02:00 in Berlin, and at 09:00 in Tokyo. At six in the evening in Los Angeles, the team's today had just begun and showed almost nothing, and a teammate's working day there fell on two UTC days.

Now each device sends its tokens by hour for the last two days, and the team's today counts from your own midnight, wherever each teammate works:

DEVICES × SUBSCRIPTIONS  15 · today · M weighted tokens
  • Today in DEVICES × SUBSCRIPTIONS, the status view's TODAY column, and every team object in the JSON is the hours since local midnight on the machine that shows the report. Your own row there now says what USAGE says.
  • 7d, 30d, and 90d still count UTC days, and their titles still say UTC. Over a week, the day's difference matters much less.
  • The menu bar app's Team window says "Today" in its header where it said "Today UTC", and "7 Days UTC" as before.
  • While a teammate runs an older release, today is the UTC day, as before, and the title says today UTC. See below.

Claude Code's reset times on any machine

Claude Code says when a window resets in a time zone by name, such as resets 9am (Europe/Berlin). Reading that needs a time zone database, which Windows and slim containers do not have, so there the window had no reset time and no forecast. The binary now carries its own, which adds about 400 KB.

JSON: today_local

The team has today_local: true when every team object's today is the hours since local midnight, in the time zone of the machine that made the report, and false when it is the report's UTC day. A report from an earlier release has none; read it as false. The schema version stays 4. See docs/json-schema.md.

Compatibility and upgrade

What to do. Nothing. Releases from v0.2.5 on install v0.7.0 within 15 minutes, and on a Mac the menu bar app updates with the binary and restarts into it.

How the hours arrive. A release before v0.7.0 rejects a snapshot with fields it does not know. So a device sends its hours, hours and burn_hours, only once its last team read, at most 3 hours old, shows every teammate on v0.7.0 or later, as with the cycles of v0.5.0. Until then, today is the UTC day for everyone. Most teams update within about half an hour of the release.

  • A retired device, or one silent for over a week, keeps today on UTC days until ai-usage team forget-device ID forgets it, as it does for the cycles.
  • A device that has not sent its hours yet, as in its first run on v0.7.0, counts its UTC day for that run.
  • A relay that does not accept the hours yet gets the snapshot without them in the same run, and is offered them again a day later. The public relay accepts them already; run your own relay on v0.7.0 before your collectors update.

State. The state folder keeps no_hours_until for a relay that refused the hours. Nothing else changes, and the menu bar app keeps its settings.

Known limitations

  • Today counts each device's hours up to its last report, as every period does. A device that went to sleep before your midnight adds nothing to today.
  • In a time zone half an hour off UTC, such as India's, an hour counts on the day most of it falls in, as USAGE already counts it.
  • 7d, 30d, and 90d are UTC days, so they still start at a different local time than today does.
  • ai-usage report --from shows an older report's today as the UTC day it counted.

What's Changed

  • Add AGENTS.md, and keep the website's private repo out of the release steps by @neoromantic in #22

Full Changelog: v0.6.2...v0.7.0