What I automated

The gym log

One HTML file, no server, no account, no automation. The thing I keep by hand, on purpose.

21 commits · first 19 Feb 2026 · last 12 Aug 2026 · 174 days · geckorello.github.io/myfitness

commits per week, counted from the repository when this page was last built

The gym log on a phone: push day, warm-up, barbell station

A training plan in a notes app

The plan lived in a notes app, the weights lived in my head, and both were wrong by the second week. Every fitness app wanted an account, a subscription and my heart rate. I wanted a page that opens in a second, in gym light, with big numbers and a wheel to log the weight.

This is the one system on the site with no automation in it, and it stays here as the control group. It shows what I build when nothing needs to run at night.

First commit

965ac16 19 Feb 2026

One file, one commit, an initial fitness app. Seven days of the week as tabs, the exercises of the day as cards. It has stayed one file since.

A drum wheel instead of plus and minus

c4d7925 20 Feb 2026

Plus and minus buttons for weight are the wrong tool with sweaty hands. The second day replaced them with a scroll drum from zero to two hundred kilograms in half-kilo steps. It is the one interaction I would defend against any redesign.

Pull day on a phone: deadlift and barbell row with weight ranges and rest times
Pull day. Weight range, rest between sets, a rating of effort, and a picture that shows the movement.

Twelve commits about contrast and size

cae0a82 21 Feb 2026

The third day was nothing but readability: thumbnails doubled, every small font two pixels bigger, colours pushed to maximum contrast. A gym is a bad place to read a phone. The commit log of that day is a list of things I could not see between sets.

Recovery day on a phone
Recovery day. The same grammar, lighter content.

Save, effort, duration

6d827b7 2 Mar 2026

Two weeks in: a save button, auto-close, a badge for perceived effort, and duration tracking so I know how long a session really takes rather than how long I think it takes.

Cardio day on a phone with intervals
Cardio day, with the intervals timed.

The plan follows the log, not the other way round

bee9128 12 Aug 2026

In August the weight ranges written into the plan were replaced with ranges derived from what I had actually lifted. The plan stopped being an intention and became a summary. Same day: the scheme moved to two sets of six to eight, because that is what the log said I do.

The log rewrote itself while I was reading it

5c3b20a 12 Aug 2026

The weight is picked on a scrolling drum. The drum saved 150 milliseconds after it came to rest — so nudging the wheel while reading a card silently replaced the weight I had actually lifted with whatever the wheel happened to stop on.

Nothing failed and nothing was reported. Scrolling now only moves the selection, and opening a card spins the drum back to the stored value, so an unsaved change visibly reverts. A small defect, and exactly the kind that makes a record untrustworthy without ever producing an error.

What it does tonight

Nothing. It sits on a static host as one file, stores my weights in the browser, and waits for Monday. No server, no account, no telemetry, no agent. It is on this site because a log of automation needs one thing in it that is not automated.

Runs on its own

  • nothing

Stays with me

  • every set, every weight, every decision to skip a day

Zero. Static hosting on a free plan, no APIs, no models.

Where this goes

Nowhere in particular, and that is the point. If I ever wire an agent into it, that will be the day the control group is gone.