You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add the FEBio Feature Manual as a third "Features" tab
Absorbs the standalone febiosoftware/febio-feature-manual repo into this
site as a third navigation tab, alongside Theory and Studio.
The feature manual is itself a generated site, not hand-authored Markdown,
so rather than copying static output its source is vendored and its
generator ported into this repo's pipeline:
- source/feature-manual/ - febio_features.json (FEBio's feature database,
exported from FEBio Studio) plus the 409 hand-authored per-feature
description fragments in meta/.
- tools/features2md.py - a port of the upstream build.py's content
generation. Two deliberate differences: it does not write its own
mkdocs.yml (build.py owns the site nav for all three manuals, so it
writes a nested nav tree to its stats sidecar instead), and it creates
output directories with exist_ok=True (upstream gitignores its generated
docs/modules/*.md, leaving that directory absent in a fresh clone and
crashing upstream's own build).
build.py's MANUALS entries now carry a "kind" that selects the converter:
"lyx" runs lyx2md.py as before, "features" runs features2md.py. "kind"
also gates the figure-fetch step, since the feature manual's figures are
vendored rather than fetched from upstream. Nav emission gained a
recursive write_nav() for the feature manual's freely nested tree, with
JSON-quoted titles so feature names carrying YAML-significant characters
cannot corrupt mkdocs.yml.
The upstream manual's own top-level tabs (Modules / Features / Output /
febcode) become expandable sidebar sections under the one Features tab.
Its home page is dropped in favor of a Preface matching the Theory and
Studio tabs.
Feature pages are written flat into docs/features/features/ with figs/
alongside them, exactly as upstream laid them out. That is why the path
doubles up. The meta/ fragments contain 44 relative sibling links and 25
figure references that only resolve under that layout, so regrouping it
would break authored prose rather than converter code; noted in both
README.md and CLAUDE.md.
Totals: 660 feature pages across 32 categories, 7 module pages, 262 plot
and 419 log variables. 264 features still have no description fragment
(inherited from upstream, listed in tools/_stats_features.json under
needs_review.pages_without_description).
Verified: build.py exits 0; mkdocs build --strict exits 0 with zero
WARNINGs, so every one of the new pages, cross-page links, and figures
resolves. mkdocs.yml's diff is additions only, with zero deletions, and
nothing under docs/theory/ or docs/studio/ changed - the Theory and
Studio nav is byte-identical.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U96z31ZadrrQ3YtU7br22M
0 commit comments