BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Personal strength-training log and analytics. Run it in Claude Code; log set by set on the phone during the session.
CLAUDE.md is the operating manual - parsing rules, the progression rule, the feedback
contract, the hard rules. Read that, not this.log.csv is the append-only system of record (empty until the first session).routine.yaml holds one or more weekly plans and a schedule of which was active
from when. Switching plans changes what is prescribed and which volume bands apply -
and nothing else. Trends, the strength index, the bridge, stalls and balance read
log.csv, which has no plan column, so a lift keeps its whole history across a switch.log.example.csv holds 12 weeks of generated history so the analytics produce
output on day zero - real output of prescribe(), not hand-typed./start open a session
bench 80x8 @2 log a set (exercise is sticky afterwards)
/end validate, append to log.csv, 4-line summary
/review volume vs target bands, 7d and 14d
/plan next session, loads from the progression rule
/scan drop a photo of a gym machine - resolves it against the library,
or proposes a new entry and asks before adding it
python3 analyze.py validate --log log.example.csv
python3 analyze.py volume --log log.example.csv --window 7
python3 analyze.py plans # the plans, and which is active
python3 analyze.py bands --plan gym80 # the bands a plan delivers, to paste
Requires Python 3.10+ and pyyaml.
A phone-first prototype: Today (the plan, prescribed loads, terse logging, the 3-line feedback contract), Trends (e1RM per lift, strength index, the volume-load bridge, stalls, balance, adherence), Plan (switch between weekly plans, edit one, export routine.yaml). Static HTML/CSS/JS, no build step, no backend.
web/data.js embeds the exercise library, the routine, the bands and a full run of
analyze.py's analytics (web/analytics.json) - generated, never hand-edited. Every
deep number in Trends is computed once by analyze.py and rendered as-is; nothing is
recomputed in JavaScript. After editing exercises.yaml, config.yaml, routine.yaml
or log.example.csv:
python3 web/build_data.py
python3 -m http.server 8000 -d web # then open http://localhost:8000
An exercise can carry an optional reference photo (image: in exercises.yaml,
a file under web/images/) - shown as a small thumbnail next to it in Today, click to
expand. Purely cosmetic, never read by analyze.py. /scan attaches these
automatically when it identifies a machine from a photo.
web/build_artifact.py bundles everything into one file (web/artifact.html, not
tracked) for hosts that can't fetch sibling files, such as a Claude Artifact - any
exercise photo is inlined as a base64 data URI in that build.
The prototype does not write log.csv. Finish prints the rows the CLI would append.
Session state and any plan edits live in localStorage, per browser.