Skip to content

v0.2.2 — first start in one command

Choose a tag to compare

@edxleon edxleon released this 28 Oct 20:16
· 67 commits to main since this release

The first-start release: one command to get going, a clear answer on where Claude connects, and the usual worries answered where they come up.

uv tool install git+https://github.com/edxleon/runcoach-ai@v0.2.2
runcoach serve

One command to start

  • runcoach serve checks Garmin and Claude before the app opens. In a terminal it asks for the Garmin login right there. If Claude Code is installed but not signed in, it offers claude auth login.
    • Before, it took four steps in two windows (serve, runcoach login, runcoach sync --days 30, and usually a restart).
  • The first sync fetches the last 30 days by itself.
  • A login in another terminal is picked up with ↻, no restart.

Where Claude connects

  • The Today tab opens with a Setup checklist: Garmin, Claude and the first sync, each marked done, running or to do, with exactly one step for each.
  • The Claude step says plainly: install Claude Code, run claude auth login, sign in with your Claude plan. There is no API key, and nothing to enter in the app.
  • The status comes from claude auth status, so the app, doctor and the terminal all say the same thing.

What the Garmin login keeps

  • Before the e-mail prompt, runcoach login explains:
    • the password goes to Garmin only and is never stored;
    • only a session token is kept, on this computer, in a folder only your user account can read;
    • the token is sent to Garmin and nowhere else;
    • how to revoke it.
  • The token folder is set to 0700 and its files to 0600, also when RUNCOACH_GARMIN_TOKENS points outside the app's own folder.

Fewer reasons to hesitate

  • The Today headline is today's decision. The recovery light is shown as one input to it ("Easy - today's call · recovery light: Go"), not as a green "Go" above "Easy today".
  • Under the coach buttons:
    • it runs on your Claude subscription, with no bill per card;
    • Claude gets the numbers the app shows, never your Garmin password;
    • an analysis never changes your watch.
  • Under "Put on watch": only what is listed goes to Garmin, and "Take off watch" removes it again.
  • The footer shows where your data lives and that deleting that folder removes everything.
  • The README has a new section, "Before you start: the usual worries": password, cost, what Claude sees, your watch, a Garmin block (with measured request counts), medical advice, removing it all.

Demo video

  • The video now plays inline in the README. It opens on a title card, the first frame a player shows, and has no burned-in captions (scripts/video.py --captions adds them back).

Evals: 25/25 in two full runs

  • The judge is now told to grade only the conditions a case names. It had started failing correct answers for options the case never asked for.
  • Two cases list their allowed outcomes outright instead of leaving the judge to do the arithmetic.
  • Without the skill files, the safety cases still fail, so the judge still tells good answers from bad ones.

Verified

  • 731 Python tests and 66 frontend tests, on Linux, Windows and macOS with Python 3.12 and 3.13, plus the install-as-a-user job.
  • A real first start in a terminal on an empty data folder.

Not affiliated with Garmin. A training tool, not medical advice.