Changelog¶
This page mirrors CHANGELOG.md in the repository. It follows Keep a Changelog, and fitdocs uses Semantic Versioning.
How to read it: entries describe what you'll notice, not internal commits. When a release changes a governed contract (the document and ownership contract, the inbox interface, the plugin API, or the fitdocs.toml settings), the entry names the contract and says what you or a plugin author need to do. Adding or removing the built-in threshold calculator counts as a contract change. See the compatibility policy for what each version number promises.
Unreleased¶
Nothing yet.
0.1.0 — 2026-09-19¶
The first public release. PyPI · tag v0.1.0
Added¶
fitdocscan be installed as a Python package with a single console command.fitdocs syncreads.fitfiles from the configured inbox, archives each source, and writes one markdown page per workout under the data root'sworkouts/folder, with charts and computed training load.fitdocs regenrebuilds every workout page using only the data root (the archive, the athlete profile, and settings). The original files and the inbox aren't needed.- The data root's owned paths, the overwrite rules, and the user-owned sections of every generated page are published as the ownership contract. The four owned folders people and agents browse (
workouts/,fit-archive/,history/,blocks/) each get a generatedAGENTS.mdrestating it, and every generated page carries a matching notice. - The inbox is configured through the
[inbox]table in<data-root>/fitdocs.toml: a folder fitdocs drains onsync, with a disposition setting that never deletes a source file. - Training-load calculation is pluggable through the
LoadCalculatorinterface. A calculator is discovered as an installed package advertising thefitdocs.load_calculatorsentry point, or as a local plugin file or folder named in[plugins]. fitdocs ships one built-in calculator,threshold. fitdocs pluginslists every registered calculator (built-in, packaged, and local) with its id, display name, version, origin, and supported sports, plus every plugin load error. It works with or without a configured data root.fitdocs checkreports every place a data root doesn't match the installed ownership contract.- Every packaged agent skill ships inside the package and can be found with
fitdocs skill, which prints a skill's folder and a one-line copy command without reading a data root or writing anything. fitdocs --versionreports the installed version.
Also in 0.1.0, beyond the changelog's headline list: route maps, the training-history page (fitdocs history), race tags and fitdocs derive-benchmarks, training blocks (fitdocs plan), data-quality warnings on training load, and the fitdocs-workouts and build-training-block agent skills.